package routes

import (
	"gin-chat-server/handlers"
	"gin-chat-server/middleware"

	"github.com/gin-gonic/gin"
)

func SetupChatRoutes(router *gin.Engine) {
	chatHandler := handlers.NewChatHandler()

	// 聊天室相关路由
	chatGroup := router.Group("/chat")
	chatGroup.Use(middleware.JwtMiddleware())

	// 聊天室管理
	chatGroup.POST("/rooms", chatHandler.CreateRoom)                   // 创建聊天室
	chatGroup.GET("/rooms", chatHandler.GetUserRooms)                  // 获取用户聊天室列表
	chatGroup.GET("/rooms/:room_id", chatHandler.GetRoomByID)          // 获取聊天室详情
	chatGroup.POST("/rooms/:room_id/join", chatHandler.JoinRoom)       // 加入聊天室
	chatGroup.POST("/rooms/:room_id/leave", chatHandler.LeaveRoom)     // 离开聊天室
	chatGroup.POST("/rooms/:room_id/read", chatHandler.MarkRoomAsRead) // 标记房间消息为已读

	// 消息相关
	chatGroup.POST("/rooms/:room_id/messages", chatHandler.SendMessage)         // 发送消息
	chatGroup.GET("/rooms/:room_id/messages", chatHandler.GetRoomMessages)      // 获取聊天室消息
	chatGroup.POST("/messages/:message_id/read", chatHandler.MarkMessageAsRead) // 标记消息为已读

	// 好友相关
	chatGroup.POST("/friends/requests", chatHandler.SendFriendRequest)               // 发送好友请求
	chatGroup.PUT("/friends/requests/:request_id", chatHandler.RespondFriendRequest) // 响应好友请求
	chatGroup.GET("/friends", chatHandler.GetFriends)                                // 获取好友列表
	chatGroup.GET("/friends/requests", chatHandler.GetFriendRequests)                // 获取好友请求列表

	// 其他功能
	chatGroup.GET("/unread-count", chatHandler.GetUnreadCount) // 获取未读消息数量
	chatGroup.GET("/search/users", chatHandler.SearchUsers)    // 搜索用户
	chatGroup.GET("/recent", chatHandler.GetRecentContacts)    // 获取最近联系人
	chatGroup.GET("/stats", chatHandler.GetChatStats)          // 获取聊天统计

	// WebSocket路由
	router.GET("/ws", handlers.WebSocketHandler)
}
